home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / drdobbs / 1987 / 06 / tellolst.jun < prev    next >
Text File  |  1987-05-05  |  4KB  |  135 lines

  1. Listing 1. Inheritance in SCOOPS
  2.  
  3. ; (C) Copyright 1987 Ernest R. Tello
  4.  
  5. (define-class artifact
  6.             (instvars material weight purpose cost)
  7.             (options
  8.              (gettable-variables material weight purpose cost)
  9.               settable-variables
  10.               inittable-variables))
  11.  
  12. (define-class transport-means
  13.             (instvars medium time-range power-source)
  14.             (mixins artifact)
  15.             (options
  16.             (gettable-variables medium time-range power-source)
  17.               settable-variables
  18.               inittable-variables))
  19.  
  20. (define-class transport-vehicle
  21.             (instvars load-capacity length max-speed)
  22.             (mixins artifact transport-means)
  23.             (options
  24.              (gettable-variables load-capacity length max-speed)
  25.               settable-variables
  26.               inittable-variables))
  27.  
  28.  
  29. (define-class passenger-vehicle
  30.             (instvars capacity safety dining facilities)
  31.             (mixins artifact transport-means transport-vehicle)
  32.             (options
  33.              (gettable-variables capacity safety dining facilities)
  34.               settable-variables
  35.               inittable-variables))
  36.  
  37. (define-class water-transport-vehicle
  38.             (classvars ( body-name 'hull) (dof 2) (dangers 'sink ) (advantages  'relaxing ))
  39.             (mixins artifact transport-means transport-vehicle passenger-vehicle)
  40.             (options
  41.              (gettable-variables dof dangers)
  42.               settable-variables
  43.               inittable-variables))
  44.  
  45. (define-class surface-vessel
  46.             (instvars #-decks #-masts #-engines )
  47.             (mixins artifact transport-means transport-vehicle passenger-vehicle water-transport-vehicle)
  48.             (options
  49.              (gettable-variables #-decks #-masts #-engines )
  50.               settable-variables
  51.               inittable-variables))
  52.  
  53. (define-class ship
  54.             (instvars
  55.              x-position y-position x-velocity y-velocity mass)
  56.             (mixins surface-vessel)
  57.                     (options
  58.             (gettable-variables x-position y-position x-velocity y-velocity mass)
  59.        settable-variables
  60.        inittable-variables))
  61.  
  62. (define-method (ship speed) ()
  63.             (sqrt (+ (expt x-velocity 2)
  64.                     (expt y-velocity 2))))
  65.  
  66. (define-method (ship direction) ()
  67.             (atan y-velocity x-velocity))
  68.  
  69. (define-class ocean-liner
  70.             (instvars company launched homeport tons )
  71.             (mixins ship)
  72.             (options
  73.              (gettable-variables company launched homeport tons )
  74.               settable-variables
  75.               inittable-variables))
  76.  
  77. (define ship1
  78.   (make-instance ship
  79.               'x-position 100
  80.               'y-position 150
  81.               'x-velocity 30
  82.               'y-velocity 40
  83.               'mass 100))
  84.  
  85. (compile-class artifact)
  86.  
  87. (compile-class transport-means)
  88.  
  89. (compile-class transport-vehicle)
  90.  
  91. (compile-class passenger-vehicle)
  92.  
  93. (compile-class water-transport-vehicle)
  94.  
  95. (compile-class surface-vessel)
  96.  
  97. (compile-class ship)
  98.  
  99. (compile-class ocean-liner)
  100.  
  101.  
  102.  
  103. Listing 2. Multiple Inheritance in SCOOPS
  104.  
  105. ; (C) Copyright 1987 Ernest R. Tello
  106.  
  107. (define-class business
  108.     (instvars name location industry business-type size year-founded ownership-type gross-sales costs market-share)
  109.     (options
  110.         (gettable-variables  name location industry business-type size year-founded ownership-type gross-sales costs market-share)
  111.     settable-variables
  112.     inittable-variables))
  113.  
  114. (define-method (business calc-net-gain) (gross-sales costs)
  115.     (- gross-sales costs))
  116.  
  117. (define-class adversary
  118.     (instvars aggressiveness allies goals common-goals strengths weaknesses)
  119.         (options
  120.             (gettable-variables aggressiveness allies goals common-goals strengths weaknesses)
  121.             settable-variables
  122.             inittable-variables))
  123.  
  124. (define-class competitor
  125.             (mixins business adversary))
  126.  
  127. (compile-class business)
  128. (compile-class adversary)
  129. (compile-class competitor)
  130.  
  131. (define your-business (make-instance business))
  132.  
  133. (define competitor-1 (make-instance competitor)) 
  134.  
  135.